package vista;
import java.awt.Component;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

import javax.swing.JFrame;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;

import util.Utilidades;

import modelo.Ciudad;
import modelo.Cliente;
import modelo.Estado;
import modelo.Status;
import modelo.Sucursal;
import modelo.dao.Servidor;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class DlgSucursal extends javax.swing.JDialog {

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	private JLabel lblSucursal;
	private JPanel jPanel1;
	private JLabel lblEstado;
	private JLabel lblCiudad;
	private JScrollPane jScrollPane2;
	private JTextArea txtaComentarios;
	private JLabel lblComentarios;
	private JScrollPane jScrollPane1;
	private JTextArea txtaDireccion;

	private JButton btAceptar;
	private JButton btSalir;
	private JLabel lblDireccion;
	private JLabel lblCalle;
	private JComboBox cbCiudad;
	private JComboBox cbEstado;
	private JTextField txtTelefono;
	private JTextField txtCodTelefono;
	private JLabel lblTelefono;
	private JTextField txtNombre;
	private ComboBoxModel cbemod;
	private ComboBoxModel cbcmod;

	/**
	* Auto-generated main method to display this JDialog
	*/
	/*public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame frame = new JFrame();
				DlgSucursal inst = new DlgSucursal(frame);
				inst.setVisible(true);
			}
		});
	}*/
	
	public DlgSucursal(JDialog dialog) {
		super(dialog);
		initGUI();
	}
	
	private void initGUI() {
		try {
			{
				this.setTitle("Sucursal");
				getContentPane().setLayout(null);
				{
					lblSucursal = new JLabel();
					getContentPane().add(lblSucursal);
					lblSucursal.setText("Nombre:");
					lblSucursal.setBounds(34, 28, 64, 14);
					lblSucursal.setFont(new java.awt.Font("Tahoma",1,11));
				}
				{
					txtNombre = new JTextField();
					getContentPane().add(txtNombre);
					txtNombre.setBounds(110, 25, 233, 28);
				}
				{
					lblTelefono = new JLabel();
					getContentPane().add(lblTelefono);
					lblTelefono.setText("Telefono:");
					lblTelefono.setBounds(34, 69, 64, 14);
					lblTelefono.setFont(new java.awt.Font("Tahoma",1,11));
				}
				{
					txtCodTelefono = new JTextField();
					getContentPane().add(txtCodTelefono);
					txtCodTelefono.setBounds(110, 66, 55, 28);
				}
				{
					txtTelefono = new JTextField();
					getContentPane().add(txtTelefono);
					txtTelefono.setBounds(177, 66, 128, 28);
				}
				{
					jPanel1 = new JPanel();
					getContentPane().add(jPanel1);
					jPanel1.setBounds(34, 134, 381, 161);
					jPanel1.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
					jPanel1.setLayout(null);
					{
						lblEstado = new JLabel();
						jPanel1.add(lblEstado);
						lblEstado.setText("Estado:");
						lblEstado.setBounds(17, 17, 54, 14);
						lblEstado.setFont(new java.awt.Font("Tahoma",1,11));
					}
					{
						final ArrayList<Estado> estados=Servidor.estados().consultarEstados();
						cbemod = new DefaultComboBoxModel(estados.toArray());
							
						cbEstado = new JComboBox();
						jPanel1.add(cbEstado);
						cbEstado.setModel(cbemod);
						cbEstado.setBounds(76, 14, 144, 28);
					}
					{
						lblCiudad = new JLabel();
						jPanel1.add(lblCiudad);
						lblCiudad.setText("Ciudad:");
						lblCiudad.setFont(new java.awt.Font("Tahoma",1,11));
						lblCiudad.setBounds(17, 55, 54, 14);
					}
					{
						
						Estado est=(Estado)cbEstado.getSelectedItem();
						ArrayList<Ciudad> ciudades = Servidor.estados().consultarCiudadesPorEstado(est.getCodigo());
						cbcmod = new DefaultComboBoxModel(ciudades.toArray());
						
						
						cbCiudad = new JComboBox();
						jPanel1.add(cbCiudad);
						cbCiudad.setModel(cbcmod);
						cbCiudad.setBounds(76, 52, 144, 28);
					}
					{
						lblCalle = new JLabel();
						jPanel1.add(lblCalle);
						lblCalle.setText("Calle/Avenida:");
						lblCalle.setBounds(17, 96, 92, 14);
						lblCalle.setFont(new java.awt.Font("Tahoma",1,11));
					}
					{
						jScrollPane1 = new JScrollPane();
						jPanel1.add(jScrollPane1);
						jScrollPane1.setBounds(115, 86, 258, 49);
						{
							txtaDireccion = new JTextArea();
							jScrollPane1.setViewportView(txtaDireccion);
							txtaDireccion.setBounds(109, 92, 257, 28);
							
							
						}
					}
				}
				{
					lblDireccion = new JLabel();
					getContentPane().add(lblDireccion);
					lblDireccion.setText("Direccion:");
					lblDireccion.setBounds(34, 108, 76, 14);
					lblDireccion.setFont(new java.awt.Font("Tahoma",1,11));
				}
				{
					btAceptar = new JButton();
					getContentPane().add(btAceptar);
					btAceptar.setText("Aceptar");
					btAceptar.setBounds(251, 446, 79, 40);
					btAceptar.setIcon(new ImageIcon(getClass().getClassLoader().getResource("iconos/Aceptar.png")));
					btAceptar.setVerticalTextPosition(JButton.BOTTOM);
					btAceptar.setHorizontalTextPosition(JButton.CENTER);
				}
				{
					btSalir = new JButton();
					getContentPane().add(btSalir);
					btSalir.setText("Salir");
					btSalir.setIcon(new ImageIcon(getClass().getClassLoader().getResource("iconos/Salir.gif")));
					btSalir.setHorizontalTextPosition(JButton.CENTER);
					btSalir.setVerticalTextPosition(JButton.BOTTOM);
					btSalir.setBounds(359, 446, 79, 40);
				}
				{
					lblComentarios = new JLabel();
					getContentPane().add(lblComentarios);
					lblComentarios.setText("Comentarios:");
					lblComentarios.setFont(new java.awt.Font("Tahoma",1,11));
					lblComentarios.setBounds(40, 318, 98, 14);
				}
				{
					jScrollPane2 = new JScrollPane();
					getContentPane().add(jScrollPane2);
					jScrollPane2.setBounds(46, 344, 356, 61);
					{
						txtaComentarios = new JTextArea();
						jScrollPane2.setViewportView(txtaComentarios);
						txtaComentarios.setBounds(40, 344, 375, 70);
						
					}
				}

			}
			this.setSize(467, 540);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	DlgSucursal dsuc=this;
	public void mostrarIncluir(JDialog dialog,final Cliente cliente) {
		
		setLocationRelativeTo(null);
		darFormatos();
		
		
		btAceptar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(!(Utilidades.campoVacio(dsuc, txtNombre, "Nombre") || Utilidades.campoVacio(dsuc, txtCodTelefono, "Codigo de Telefono")
						|| Utilidades.campoVacio(dsuc, txtTelefono, "Telefono")|| Utilidades.campoVacio(dsuc, txtaDireccion, "Calle/Avenida")))
				{   
					Ciudad ciu=(Ciudad)cbCiudad.getSelectedItem();
					Sucursal suc=Servidor.clientes().agregarSucursal(cliente, txtNombre.getText(), txtaDireccion.getText(), ciu, txtCodTelefono.getText()+"-"+txtTelefono.getText(),txtaComentarios.getText(),Status.ACTIVO);
					
					if(suc!=null)
					{	JOptionPane.showMessageDialog(dsuc, "Registro incluido exitosamente","Inclusion",JOptionPane.INFORMATION_MESSAGE);
						dsuc.dispose();
					}
					else
						JOptionPane.showMessageDialog(dsuc, "EL registro no pudo ser incluido","Inclusion",JOptionPane.ERROR_MESSAGE);
				}
			}
		});

				
		btSalir.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				dsuc.dispose();
			}
		});
	
		cbEstado.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Estado est=(Estado)cbEstado.getSelectedItem();
				ArrayList<Ciudad> ciudades = Servidor.estados().consultarCiudadesPorEstado(est.getCodigo());
				cbcmod = new DefaultComboBoxModel(ciudades.toArray());
				cbCiudad.setModel(cbcmod);
				
			}});
		
		this.setModalityType(ModalityType.APPLICATION_MODAL);
		setVisible(true);
	}
	
	public void mostrarModificar(JDialog dialog,final Sucursal suc) {
		
		setLocationRelativeTo(null);
		darFormatos();
		llenarDatos(suc);
		
		btAceptar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(!(Utilidades.campoVacio(dsuc, txtNombre, "Nombre") || Utilidades.campoVacio(dsuc, txtCodTelefono, "Codigo de Telefono")
						|| Utilidades.campoVacio(dsuc, txtTelefono, "Telefono")|| Utilidades.campoVacio(dsuc, txtaDireccion, "Calle/Avenida")))
				{   
					leerDatos(suc);
			
					if(Servidor.clientes().modificarSucursal(suc)!=null)
					{	JOptionPane.showMessageDialog(dsuc, "Registro modificado exitosamente","Modificacion",JOptionPane.INFORMATION_MESSAGE);
						dsuc.dispose();
					}
					else
						JOptionPane.showMessageDialog(dsuc, "EL registro no pudo ser modificado","Inclusion",JOptionPane.ERROR_MESSAGE);
				}
				  
			}
		});

				
		btSalir.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				dsuc.dispose();
			}
		});
		this.setModalityType(ModalityType.APPLICATION_MODAL);
		setVisible(true);
		
	}
	   public void mostrarVer(JDialog dialog,Sucursal suc) {
			
		   	setLocationRelativeTo(null);
			darFormatos();
			btAceptar.setVisible(false);
			
			llenarDatos(suc);
			deshabilitar();
	        
					
			btSalir.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent arg0) {
					dsuc.dispose();
				}
			});
			
			this.setModalityType(ModalityType.APPLICATION_MODAL);
			setVisible(true);
			
		}
	   
	 //Funciones usadas en la funcion mostrar
		

		
		public void darFormatos(){ 
			
			Utilidades.convertirMayuscula(txtNombre);
			Utilidades.convertirMayuscula(txtaDireccion);
			Utilidades.convertirMayuscula(txtaComentarios);
			Utilidades.soloNumeros(txtCodTelefono);
			Utilidades.soloNumeros(txtTelefono);
			Utilidades.limitarCaracteres(txtCodTelefono,4);
			Utilidades.limitarCaracteres(txtTelefono, 7);
			
		}
		
		public void llenarDatos(Sucursal obj){
			txtNombre.setText(obj.getDescripcion());
			String tel[] = obj.getTelefono().split("-");
			txtCodTelefono.setText(tel[0]);
			txtTelefono.setText(tel[1]);
			txtaDireccion.setText(obj.getDireccion());
			txtaComentarios.setText(obj.getComentarios());
			cbEstado.setSelectedItem(obj.getCiudad().getEstado());
			cbCiudad.setSelectedItem(obj.getCiudad());
		}
		
		public void leerDatos(Sucursal obj){
			obj.setDescripcion(txtNombre.getText());
			obj.setTelefono(txtCodTelefono.getText()+"-"+txtTelefono.getText());
			obj.setDireccion(txtaDireccion.getText());
			obj.setComentarios(txtaComentarios.getText());
			Ciudad ciu=(Ciudad)cbCiudad.getSelectedItem();
			obj.setCiudad(ciu);
			
		}
		
		public void deshabilitar(){
			txtNombre.setEnabled(false);
			txtCodTelefono.setEnabled(false);
			txtTelefono.setEnabled(false);
			txtaDireccion.setEnabled(false);
			txtaComentarios.setEnabled(false);
			cbEstado.setEnabled(false);
			cbCiudad.setEnabled(false);
		}

	}